package com.shiyun.new_linedata;

import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.shiyun.disaster_station.common.ReturnMap;
import lombok.Data;
import org.springframework.scheduling.support.SimpleTriggerContext;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.*;

/**
 * 类 描 述: 线路导入
 * 作   者: 史 云
 * 版   本: 1.0.0
 * 时   间: 2022年01月11日  10:00:00
 */
@RequestMapping("/linedata/import")
public class ImportLineDataController {
    /**
     * 方法描述: 线路点标识的导入
     * 作    者: 史 云
     * 时    间: 2022年05月17日  11:18:24
     */
    @RequestMapping("/point")
    public ReturnMap importPoint(
            @RequestParam("file") MultipartFile file,
            @RequestParam("headerTextList") List<String> headerTextList,
            @RequestParam("headerKeyList") List<String> headerKeyList,
            @RequestParam("type") ElementType elementType
    ) {
//        return pointService.importPoint(file,headerTextList,headerKeyList);
        return null;
    }

    /**
     * 类 描 述: 元素类型
     * 作    者: 史 云
     * 时    间: 2022年10月08日  14:35:35
     */
    enum ElementType {
        /**
         * 属性描述: 点标识
         * 作    者: 史 云
         * 时    间: 2022年10月08日  14:37:29
         */
        POINT,
        /**
         * 属性描述: 区间
         * 作    者: 史 云
         * 时    间: 2022年10月08日  14:37:44
         */
        SECTION,
        /**
         * 属性描述: 站点
         * 作    者: 史 云
         * 时    间: 2022年10月08日  14:37:58
         */
        STATION,
        /**
         * 属性描述: 线路
         * 作    者: 史 云
         * 时    间: 2022年10月08日  14:38:19
         */
        LINE;
    }

    public static void main(String[] args) throws InterruptedException {
//        String token = getToken();

//        String userId = getUserId("d56eb82c40693ec4a009252205e0e2c4", "17361571536");

        String notice = getNotice("9723af3c0c2e3c9789fa74978540aefd");

    }

    /**
     * 方法描述: 获取TOKEN
     * 作    者: 史 云
     * 时    间: 2022年10月12日  11:09:28
     */
    public static String getToken(){
        String appKey = "dinggcn8oed4idm9mwrz";
        String appSecret = "zHiNQZHceA5fMEMU8iPh73vP00fYIFCQ2HSr1RJQ8e7JNYCYImTjTscwQ4lDjG4H";
        String url = "https://oapi.dingtalk.com/gettoken?appkey=appKey&appsecret=appSecret".replace("appKey",appKey).replace("appSecret",appSecret);
        String accessToken = JSONUtil.parseObj(HttpUtil.get(url)).getStr("access_token") ;
        System.out.println(accessToken);
        return accessToken;
    }

    /**
     * 方法描述: 发送消息
     * 作    者: 史 云
     * 时    间: 2022年10月12日  11:10:11
     */
    public static String getNotice(String accessToken){
        String chatId = "chataa77a2df65e6f6234fbd91804833b0e5";
        String openConversationId = "cidzPPLbOKDB7zBDzSmaQ/X6Q==";
        String robotCode = "dinggcn8oed4idm9mwrz";
        String cardBizld = "8176f2e0-1fb4-4447-84d6-1f6eef0fc970";
        String agentId = "1941993495";

        String url = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=accessToken".replace("accessToken", accessToken);
        Map<String, Object> param = new HashMap<>();
        param.put("agent_id", agentId);
        param.put("userid_list", "2239482222686303,3208020657662735,221524062035285710,233612102924149136");
        Msg msg = new Msg();
        String markdown = msg.getAction_card().getMarkdown();
        msg.getAction_card().setMarkdown(markdown.replace("deviceCode","ID1121032B"));
        String singleUrl = msg.getAction_card().getSingle_url();
        msg.getAction_card().setSingle_url(singleUrl.replace("ID","ID1121032B"));
        param.put("msg",msg);
        System.out.println(JSONUtil.toJsonStr(param));
        String body = HttpUtil.createGet(url).body(JSONUtil.toJsonStr(param)).execute().body();
        System.out.println(body);
        return body;
    }

    /**
     * 方法描述: 获取钉钉的用户ID
     * 作    者: 史 云
     * 时    间: 2022年10月12日  11:25:47
     */
    public static String getUserId(String accessToken,String mobile){
        String url = "https://oapi.dingtalk.com/topapi/v2/user/getbymobile?access_token=accessToken".replace("accessToken",accessToken);
        String userId = JSONUtil.parseObj(HttpUtil.post(url, JSONUtil.toJsonStr(MapUtil.of("mobile", mobile)))).getJSONObject("result").getStr("userid");
        System.out.println(userId);
        return userId;
    }

    @Data
    static class Msg {
        String msgtype = "action_card";
        ActionCard action_card = new ActionCard();

        public ActionCard getAction_card() {
            return action_card;
        }

        @Data
        class ActionCard {
            String title = "视频告警通知";
            String btn_orientation = "0";
            String single_title = "详情访问";
            String single_url = "eapp://pages/index/index?id=ID";
            String markdown = "设备编号：deviceCode  <br>告警时间:" + DateUtil.formatDateTime(new Date());
            List<BtnJson> btn_json_list = ListUtil.of(new BtnJson("eapp://pages/index/index?id=ID","详情访问"));

            public void setSingle_url(String single_url) {
                this.single_url = single_url;
                btn_json_list.get(0).setAction_url(single_url);
            }

            @Data
            class BtnJson{
                String action_url;
                String title;

                public void setAction_url(String action_url) {
                    this.action_url = action_url;
                }

                public BtnJson(String action_url, String title) {
                    this.action_url = action_url;
                    this.title = title;
                }
            }
        }
    }
}
